package com.cy.store.controller.handler;

import com.cy.store.service.ex.*;
import com.cy.store.util.JsonResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import static javax.swing.JOptionPane.ERROR_MESSAGE;

@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {

    @ExceptionHandler(RuntimeException.class)
    public JsonResult<Void> exceptionHandler(BaseException e){
        JsonResult<Void> jsonResult=new JsonResult<>(e);
        if(e instanceof InsertException){
            jsonResult.setState(ERROR_MESSAGE);
            jsonResult.setMessage("插入时发生未知异常");
            log.info("注册信息e:{}",jsonResult.getMessage());
            jsonResult.setData(null);
        }else if(e instanceof UserNameOccupiedException){
            jsonResult.setState(ERROR_MESSAGE);
            jsonResult.setMessage("用户名已存在");
            log.info("注册信息e:{}",jsonResult.getMessage());
            jsonResult.setData(null);
        }else if(e instanceof UserNotFoundException){
            jsonResult.setState(ERROR_MESSAGE);
            jsonResult.setMessage("用户不存在");
            log.info("登录信息e:{}",jsonResult.getMessage());
            jsonResult.setData(null);
        }else if(e instanceof PasswordErrorException){
            jsonResult.setState(ERROR_MESSAGE);
            jsonResult.setMessage("密码错误");
            log.info("登录信息e:{}",jsonResult.getMessage());
            jsonResult.setData(null);
        }
        return jsonResult;
    }
}
